package com.py.credit.service.impl;

import com.py.credit.dao.LhjcDataCheckDao;
import com.py.credit.entity.LhjcCube;
import com.py.credit.entity.LhjcMetric;
import com.py.credit.service.LhjcDataCheckService;
import com.py.credit.utils.MD5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

@Service
public class LhjcDataCheckServiceImpl implements LhjcDataCheckService {

    @Autowired
    private LhjcDataCheckDao lhjcDataCheckDao;

    @Override
    public Map<String, Object> duplicationCheck(List<Map<String, Object>> listDataMap, LhjcCube cube) {
        // TODO Auto-generated method stub
        StringBuilder duplicationMess = new StringBuilder(200);
        StringBuilder missMess = new StringBuilder(200);
        StringBuilder deptErrorMess = new StringBuilder(200);
//		StringBuilder lyErrorMess = new StringBuilder(200);
        //重复性条数
        int duplicationCount = 0;
        //缺失信息条数
        int missCount = 0;
        //部门错误数
        int deptErrorCount = 0;
        //领域错误数
//		int lyErrorCount = 0;
        Set<String> set = new HashSet<String>();
        Set<String> csSet = new HashSet<String>();
        String md5s = "";
        String currentRecord = "";
        String currentCfzt = "";

        Map<String,String> hashMap=new HashMap<String, String>();
        Map<String,String> hashCsType=new HashMap<String, String>();

        my:
        for (Iterator<Map<String, Object>> it = listDataMap.listIterator(); it.hasNext(); ) {

            Map<String, Object> next = it.next();

            StringBuilder data = new StringBuilder();
            for (LhjcMetric metric : cube.getListMetric()) {
                if (next.get(metric.getMetricCode()) == null || next.get(metric.getMetricCode()) == "" || (next.get(metric.getMetricCode()) + "").trim().equals("")) {
                    it.remove();
                    missCount++;
                    missMess.append("第").append(next.get("rowIndex")).append("行数据缺失").append("\r\n");
                    continue my;
                }

                next.put(metric.getMetricCode(), (next.get(metric.getMetricCode()) + "").trim());
            }

            if (cube.getCubeId() == 1002) {
                data.append(next.get("bm") == null ? "" : next.get("bm"));
                data.append(next.get("name") == null ? "" : next.get("name"));

                //发起部门校验
                String fqbm = (String) next.get("cfbm");

                if(fqbm.equals("所有部门")){
                    deptErrorCount++;
                    deptErrorMess.append("第").append(next.get("rowIndex")).append("行发起部门不能为所有部门").append("\r\n");
                    it.remove();
                    continue;
                }else{
                    String fqbmId = lhjcDataCheckDao.selectCfbmId(fqbm);
                    if (fqbmId == null) {
                        deptErrorCount++;
                        deptErrorMess.append("第").append(next.get("rowIndex")).append("行部门数据有误").append("\r\n");
                        it.remove();
                        continue;
                    }
                    next.put("cfbm", fqbmId);
                }

                //处罚部门校验
                String cfbm = (String) next.get("deptId");

                String csbm = (String) next.get("csbm");
                String remark = (String) next.get("remark");

                String csType=lhjcDataCheckDao.selectCsTypeByCsRemark(remark);
                String tableExistCsType=hashCsType.get(remark);

                String tempType="";

                if(cfbm.equals("所有部门")){
                    if(csType!=null && csType.equals("P")){
                        deptErrorCount++;
                        deptErrorMess.append("第").append(next.get("rowIndex")).append("行措施是普通指标").append("\r\n");
                        it.remove();
                        continue;
                    }
                    next.put("deptId","-1");
                    tempType="G";
                }else{
                    String cfbmId = lhjcDataCheckDao.selectCfbmId(cfbm);
                    if (cfbmId == null) {
                        deptErrorCount++;
                        deptErrorMess.append("第").append(next.get("rowIndex")).append("行部门数据有误").append("\r\n");
                        it.remove();
                        continue;
                    }
                    next.put("deptId", cfbmId);
                    tempType="P";
                }

                if(tableExistCsType!=null && !tableExistCsType.equals(tempType)){
                    deptErrorCount++;
                    deptErrorMess.append("第").append(next.get("rowIndex")).append("行措施在表格中已是其他类型指标").append("\r\n");
                    it.remove();
                    continue;
                }

                hashCsType.put(remark,tempType);

                String tableExistRemark=hashMap.get(csbm);
                if(tableExistRemark!=null){
                    if(!tableExistRemark.equals(remark)){
                        duplicationMess.append("第").append(next.get("rowIndex")).append("行措施编码已被表格中其他措施使用").append("\r\n");
                        duplicationCount++;
                        it.remove();
                        continue;
                    }
                }else{
                    hashMap.put(csbm,remark);
                }

                String databaseExistRemark=lhjcDataCheckDao.selectRemarkByBm(csbm);
                if(databaseExistRemark!=null && !databaseExistRemark.equals(remark)){
                    duplicationMess.append("第").append(next.get("rowIndex")).append("行措施编码已被数据库中其他措施使用").append("\r\n");
                    duplicationCount++;
                    it.remove();
                    continue;
                }

                if (!csSet.contains((String) next.get("record"))) {
                    md5s = MD5Util.getInstance().md5s(data.toString().getBytes());
                    // 排除该批次文件中重复数据
                    if (set.contains(md5s)) {
                        duplicationMess.append("第").append(next.get("rowIndex")).append("行数据重复").append("\r\n");
                        duplicationCount++;
                        it.remove();
                        continue;
                    }

                    set.add(md5s);

                    String bm = (String) next.get("bm");
                    String name = (String) next.get("name");
                    int num = lhjcDataCheckDao.selectCfGz(bm, name);
                    if (num > 0) {
                        duplicationMess.append("第").append(next.get("rowIndex")).append("行数据重复").append("\r\n");
                        duplicationCount++;
                        it.remove();
                        continue;
                    }

                    csSet.add((String) next.get("record"));
                }
            }

            if (cube.getCubeId() == 1003) {
                data.append((String) next.get("deptId") == null ? "" : next.get("deptId"));
                data.append((String) next.get("csbm") == null ? "" : next.get("csbm") + ",");

                String csbm = (String) next.get("csbm");
                String remark = (String) next.get("remark");

                String csType=lhjcDataCheckDao.selectCsTypeByCsRemark(remark);
                String tableExistCsType=hashCsType.get(remark);

                String tempType="";

                //部门校验
                String name = (String) next.get("deptId");
                if(name.equals("所有部门")){
                    if(csType!=null && csType.equals("P")){
                        deptErrorCount++;
                        deptErrorMess.append("第").append(next.get("rowIndex")).append("行措施是普通指标").append("\r\n");
                        it.remove();
                        continue;
                    }

                    next.put("deptId", "-1");
                    tempType="G";
                }else{
                    String deptId = lhjcDataCheckDao.selectCfbmId(name);
                    if (deptId == null) {
                        deptErrorCount++;
                        deptErrorMess.append("第").append(next.get("rowIndex")).append("行部门不存在").append("\r\n");
                        it.remove();
                        continue;
                    }
                    next.put("deptId", deptId);
                    tempType="P";
                }

                if(tableExistCsType!=null && !tableExistCsType.equals(tempType)){
                    deptErrorCount++;
                    deptErrorMess.append("第").append(next.get("rowIndex")).append("行措施在表格中已是其他类型指标").append("\r\n");
                    it.remove();
                    continue;
                }

                hashCsType.put(remark,tempType);

                String tableExistRemark=hashMap.get(csbm);
                if(tableExistRemark!=null){
                    if(!tableExistRemark.equals(remark)){
                        duplicationMess.append("第").append(next.get("rowIndex")).append("行措施编码已被表格中其他措施使用").append("\r\n");
                        duplicationCount++;
                        it.remove();
                        continue;
                    }
                }else{
                    hashMap.put(csbm,remark);
                }

                String databaseExistRemark=lhjcDataCheckDao.selectRemarkByBm(csbm);
                if(databaseExistRemark!=null && !databaseExistRemark.equals(remark)){
                    duplicationMess.append("第").append(next.get("rowIndex")).append("行措施编码已被数据库中其他措施使用").append("\r\n");
                    duplicationCount++;
                    it.remove();
                    continue;
                }

                String csId = lhjcDataCheckDao.selectCsByBm(csbm);
                if (csId != null) {
                    if (lhjcDataCheckDao.selectDeptCsSameById((String) next.get("jclb"), (String) next.get("deptId"), csId) > 0) {
                        deptErrorCount++;
                        deptErrorMess.append("第").append(next.get("rowIndex")).append("行部门数据已存在相同的措施").append("\r\n");
                        it.remove();
                        continue;
                    }
                }

                md5s = MD5Util.getInstance().md5s(data.toString().getBytes());
                // 排除该批次文件中重复数据
                if (set.contains(md5s)) {
                    duplicationMess.append("第").append(next.get("rowIndex")).append("行数据重复").append("\r\n");
                    duplicationCount++;
                    it.remove();
                    continue;
                }

                set.add(md5s);

            }

            if (cube.getCubeId() == 1004) {
                data.append((String) next.get("lyId") == null ? "" : next.get("lyId"));
                data.append((String) next.get("csbm") == null ? "" : next.get("csbm") + ",");

                //领域校验
                String lybm = (String) next.get("lyId");
                String lyId = lhjcDataCheckDao.selectLyByBm(lybm);
                String csbm = (String) next.get("csbm");
                String csId = lhjcDataCheckDao.selectCsByBm(csbm);

                if (lyId == null) {
                    deptErrorCount++;
                    deptErrorMess.append("第").append(next.get("rowIndex")).append("行领域不存在").append("\r\n");
                    it.remove();
                    continue;
                }

                String remark = (String) next.get("remark");

                String tableExistRemark=hashMap.get(csbm);
                if(tableExistRemark!=null){
                    if(!tableExistRemark.equals(remark)){
                        duplicationMess.append("第").append(next.get("rowIndex")).append("行措施编码已被表格中其他措施使用").append("\r\n");
                        duplicationCount++;
                        it.remove();
                        continue;
                    }
                }else{
                    hashMap.put(csbm,remark);
                }

                String databaseExistRemark=lhjcDataCheckDao.selectRemarkByBm(csbm);
                if(databaseExistRemark!=null && !databaseExistRemark.equals(remark)){
                    duplicationMess.append("第").append(next.get("rowIndex")).append("行措施编码已被数据库中其他措施使用").append("\r\n");
                    duplicationCount++;
                    it.remove();
                    continue;
                }

                if (csId != null) {
                    if (lhjcDataCheckDao.selectLyCsSameById((String) next.get("jclb"), lyId, csId) > 0) {
                        deptErrorCount++;
                        deptErrorMess.append("第").append(next.get("rowIndex")).append("行领域数据存在相同的措施").append("\r\n");
                        it.remove();
                        continue;
                    }
                }

                md5s = MD5Util.getInstance().md5s(data.toString().getBytes());
                // 排除该批次文件中重复数据
                if (set.contains(md5s)) {
                    duplicationMess.append("第").append(next.get("rowIndex")).append("行数据重复").append("\r\n");
                    duplicationCount++;
                    it.remove();
                    continue;
                }

                set.add(md5s);
            }
        }

        Map<String, Object> map = new HashMap<>();
        map.put("duplicationMess", duplicationMess.toString());
        map.put("duplicationCount", duplicationCount);
        map.put("missMess", missMess.toString());
        map.put("missCount", missCount);
        map.put("deptErrorMess", deptErrorMess.toString());
        map.put("deptErrorCount", deptErrorCount);
        return map;
    }

//	@Override
//	public Map<String, Object> duplicationFileFrCheck(List<Map<String, Object>> listDataMap, LhjcCube cube,LhjcBatchLog batchLog) {
//		StringBuilder duplicationMess = new StringBuilder(200);
//		StringBuilder missMess = new StringBuilder(200);
//		StringBuilder deptErrorMess = new StringBuilder(200);
//
//		//重复性条数
//		int duplicationCount = 0;
//		//缺失信息条数
//		int missCount = 0;
//		//部门错误数
//		int deptErrorCount = 0;
//
//		Set<String> set = new HashSet<String>();
//		Set<String> csSet = new HashSet<String>();
//		String md5s = "";
//		Date now=new Date();
//
//		my:for (Iterator<Map<String, Object>> it = listDataMap.listIterator(); it.hasNext();) {
//
//			Map<String, Object> next = it.next();
//
//			//判断必填字段是否缺失
//			StringBuilder data = new StringBuilder();
//			if(next.get("qymc")==null || next.get("qymc").toString().trim()=="" ||
//					next.get("jclb")==null || next.get("jclb").toString().trim()=="" ||
//					next.get("lhjcgzbm")==null || next.get("lhjcgzbm").toString().trim()=="" ||
//					next.get("cfqx")==null || next.get("cfqx").toString().trim()=="" ||
//					next.get("ysajh")==null || next.get("ysajh").toString().trim()==""){
//				it.remove();
//				missCount++;
//				missMess.append("第").append(next.get("rowIndex")).append("行数据缺失").append("\r\n");
//				continue my;
//			}
//
//			next.put("qymc",next.get("qymc").toString().trim());
//			next.put("jclb",next.get("jclb").toString().trim());
//			next.put("lhjcgzbm",next.get("lhjcgzbm").toString().trim());
//			next.put("cfqx",next.get("cfqx").toString().trim());
//			next.put("ysajh",next.get("ysajh").toString().trim());
//
//			//三个编码必填一个
//			if((next.get("tyshxydm")==null || next.get("tyshxydm").toString().trim()=="") &&
//					(next.get("zzjgdm")==null || next.get("zzjgdm").toString().trim()=="") &&
//					(next.get("ywzgbmdjm")==null || next.get("ywzgbmdjm").toString().trim()=="")){
//				it.remove();
//				missCount++;
//				missMess.append("第").append(next.get("rowIndex")).append("行统一社会信用代码、组织机构代码、业务主管部门登记码至少选填一项").append("\r\n");
//				continue my;
//			}
//
//			next.put("tyshxydm",next.get("tyshxydm")==null ? "":next.get("tyshxydm").toString().trim());
//			next.put("zzjgdm",next.get("zzjgdm")==null ? "":next.get("zzjgdm").toString().trim());
//			next.put("ywzgbmdjm",next.get("ywzgbmdjm")==null ? "":next.get("ywzgbmdjm").toString().trim());
//
//			//判断截止日期是否符合格式
//			String jzrq= (String) next.get("cfqx");
//			//String reg = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))$";
//			String reg =  "^((\\d{2}(([02468][048])|([13579][26]))[\\/]((((0?[13578])|(1[02]))[\\/]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\/]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\/]((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\/]((((0?[13578])|(1[02]))[\\/]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\/]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\/]((0?[1-9])|(1[0-9])|(2[0-8]))))))$";
//			if(!jzrq.matches(reg)){
//				it.remove();
//				deptErrorCount++;
//				deptErrorMess.append("第").append(next.get("rowIndex")).append("行截止日期格式错误").append("\r\n");
//				continue my;
//			}
//
//			jzrq=jzrq.replaceAll("/","-");
//			next.put("cfqx",jzrq);
//
//			//判断日期是否比生效日期大
//			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//			try {
//				if(sdf.parse(jzrq).getTime()<now.getTime()){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("行截止日期不能小于当前日期").append("\r\n");
//					continue my;
//				}
//			} catch (ParseException e) {
//				it.remove();
//				deptErrorCount++;
//				deptErrorMess.append("第").append(next.get("rowIndex")).append("行截止日期格式错误").append("\r\n");
//				continue my;
//			}
//
//			//数据库比对校验
//			String qymc = (String)next.get("qymc");
//			String tyshxydm = (String)next.get("tyshxydm");
//			String zzjgdm = (String)next.get("zzjgdm");
//			String ywzgbmdjm = (String)next.get("ywzgbmdjm");
//			String lhjcgzbm = (String)next.get("lhjcgzbm");
//			String ysajh = (String)next.get("ysajh");
//
//			//判断输入的机构信息是否在数据库中存在
//			int frExist = dataCheckDao.selectFrExist(qymc, tyshxydm, zzjgdm, ywzgbmdjm);
//			if(frExist<1){
//				//新增外地企业
//				String uuid= UuidUtil.getInstance().getUUid();
//				dataInsertDao.addCompanyMess(uuid,qymc,tyshxydm,zzjgdm,ywzgbmdjm,"W");
//			}
//
//			if(frExist>1){
//				it.remove();
//				deptErrorCount++;
//				deptErrorMess.append("第").append(next.get("rowIndex")).append("行机构数据数据库中存在多条").append("\r\n");
//				continue my;
//			}
//
//			String jclb=(String) next.get("jclb");
//			String jclbName="";
//			if(jclb.equals("C")){
//				jclbName="惩戒";
//			}else {
//				jclbName="激励";
//			}
//
//			//判断填入的规则编码是否存在
//			int lhjcgzbmExist = dataCheckDao.selectLhjcgzbmExist(lhjcgzbm,jclb,dataCheckDao.selectTopDeptId(batchLog.getManagerId()));
//			if(lhjcgzbmExist<1){
//				it.remove();
//				deptErrorCount++;
//				deptErrorMess.append("第").append(next.get("rowIndex")).append("行当前用户所在部门没有该联合").append(jclbName).append("规则").append("\r\n");
//				continue my;
//			}
//
//			//判断填入的规则的处罚主体是否是法人
//			String cfzt = dataCheckDao.selectGzInfoCfzt(lhjcgzbm, jclb);
//			if(cfzt.equals("P")){
//				it.remove();
//				deptErrorCount++;
//				deptErrorMess.append("第").append(next.get("rowIndex")).append("行联合").append(jclbName).append("规则的处罚主体是自然人").append("\r\n");
//				continue my;
//			}
//
//			//判断机构信息是否还在处罚中
//			Date jzrqDate = dataCheckDao.selectJzrqDate(qymc, lhjcgzbm,jclb,ysajh);
//			try {
//				if(null!=jzrqDate){
//					if(now.getTime()<=jzrqDate.getTime() || sdf.format(now).equals(sdf.format(jzrqDate)) || sdf.parse(jzrq).getTime()<=jzrqDate.getTime()){
//						it.remove();
//						deptErrorCount++;
//						deptErrorMess.append("第").append(next.get("rowIndex")).append("行机构还在").append(jclbName).append("中").append("\r\n");
//						continue my;
//					}
//				}
//			} catch (ParseException e) {
//				it.remove();
//				deptErrorCount++;
//				deptErrorMess.append("第").append(next.get("rowIndex")).append("行截止日期格式错误").append("\r\n");
//				continue my;
//			}
//
//			//表格重复数据校验
//			data.append((String)next.get("qymc")==null ? "":next.get("qymc"));
//			data.append((String)next.get("jclb")==null ? "":next.get("jclb")+",");
//			data.append((String)next.get("lhjcgzbm")==null ? "":next.get("lhjcgzbm")+",");
//			data.append((String)next.get("cfqx")==null ? "":next.get("cfqx")+",");
//			data.append((String)next.get("ysajh")==null ? "":next.get("ysajh")+",");
//
//			md5s = MD5Util.getInstance().md5s(data.toString().getBytes());
//			// 排除该批次文件中重复数据
//			if (set.contains(md5s)) {
//				duplicationMess.append("第").append(next.get("rowIndex")).append("行数据重复").append("\r\n");
//				duplicationCount++;
//				it.remove();
//				continue;
//			}
//
//			set.add(md5s);
//		}
//
//		Map<String, Object> map = new HashMap<>();
//		map.put("duplicationMess", duplicationMess.toString());
//		map.put("duplicationCount", duplicationCount);
//		map.put("missMess", missMess.toString());
//		map.put("missCount", missCount);
//		map.put("deptErrorMess", deptErrorMess.toString());
//		map.put("deptErrorCount", deptErrorCount);
//		map.put("now",now);
//		return map;
//	}

//	@Override
//	public Map<String, Object> duplicationFileZrrCheck(List<Map<String, Object>> listDataMap, LhjcCube cube,LhjcBatchLog batchLog) {
//		StringBuilder duplicationMess = new StringBuilder(200);
//		StringBuilder missMess = new StringBuilder(200);
//		StringBuilder deptErrorMess = new StringBuilder(200);
//
//		//重复性条数
//		int duplicationCount = 0;
//		//缺失信息条数
//		int missCount = 0;
//		//部门错误数
//		int deptErrorCount = 0;
//
//		Set<String> set = new HashSet<String>();
//		Set<String> csSet = new HashSet<String>();
//		String md5s = "";
//		Date now=new Date();
//
//		my:for (Iterator<Map<String, Object>> it = listDataMap.listIterator(); it.hasNext();) {
//
//			Map<String, Object> next = it.next();
//
//			StringBuilder data = new StringBuilder();
//
//			//excel每格判空校验
//			if(next.get("xm")==null || next.get("xm").toString().trim()=="" ||
//					next.get("sfzbm")==null || next.get("sfzbm").toString().trim()=="" ||
//					next.get("jclb")==null || next.get("jclb").toString().trim()=="" ||
//					next.get("lhjcgzbm")==null || next.get("lhjcgzbm").toString().trim()=="" ||
//					next.get("cfqx")==null || next.get("cfqx").toString().trim()=="" ||
//					next.get("zjtype")==null || next.get("zjtype").toString().trim()=="" ||
//					next.get("ysajh")==null || next.get("ysajh").toString().trim()==""){
//				it.remove();
//				missCount++;
//				missMess.append("第").append(next.get("rowIndex")).append("行数据缺失").append("\r\n");
//				continue my;
//			}
//
//			next.put("xm",next.get("xm").toString().trim());
//			next.put("sfzbm",next.get("sfzbm").toString().trim());
//			next.put("jclb",next.get("jclb").toString().trim());
//			next.put("lhjcgzbm",next.get("lhjcgzbm").toString().trim());
//			next.put("cfqx",next.get("cfqx").toString().trim());
//			next.put("zjtype",next.get("zjtype").toString().trim());
//			next.put("ysajh",next.get("ysajh").toString().trim());
//
//			if(cube.getCubeId()==1006){
//				if(next.get("glcf")==null || next.get("glcf").toString().trim()==""){
//					it.remove();
//					missCount++;
//					missMess.append("第").append(next.get("rowIndex")).append("行数据缺失").append("\r\n");
//					continue my;
//				}
//
//				next.put("glcf",next.get("glcf").toString().trim());
//
//				if (next.get("glcf").equals("Y") && (next.get("glfrcfsjbm")==null || next.get("glfrcfsjbm").toString().trim()=="")){
//					it.remove();
//					missCount++;
//					missMess.append("第").append(next.get("rowIndex")).append("行关联法人处罚事件编码必填").append("\r\n");
//					continue my;
//				}
//
//				if (next.get("glcf").equals("Y") && (next.get("zw")==null || next.get("zw").toString().trim()=="")){
//					it.remove();
//					missCount++;
//					missMess.append("第").append(next.get("rowIndex")).append("行关联法人处罚职务必填").append("\r\n");
//					continue my;
//				}
//
//				if (next.get("glcf").equals("Y")){
//					next.put("glfrcfsjbm",next.get("glfrcfsjbm").toString().trim());
//					next.put("zw",next.get("zw").toString().trim());
//				}
//			}
//
//			//身份证号码校验
//			IdcardValidator check = new IdcardValidator();
//			String zjtype = (String) next.get("zjtype");
//			String sfzbm = (String) next.get("sfzbm");
//			if(zjtype.equals("S")){
//				if(!check.run(sfzbm,"")){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("行居民身份证号码格式错误").append("\r\n");
//					continue my;
//				}
//			}else if(zjtype.equals("H")){
//				//护照校验
//				String passport="^[a-zA-Z0-9]{5,17}$";
//				if(!sfzbm.matches(passport)){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("行护照格式错误").append("\r\n");
//					continue my;
//				}
//			}else {
//				if(sfzbm.length()>30){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("行证件号码过长").append("\r\n");
//					continue my;
//				}
//			}
//
//			//判断截止日期是否符合格式
//			String jzrq= (String) next.get("cfqx");
//			//String reg = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))$";
//			String reg =  "^((\\d{2}(([02468][048])|([13579][26]))[\\/]((((0?[13578])|(1[02]))[\\/]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\/]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\/]((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\/]((((0?[13578])|(1[02]))[\\/]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\/]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\/]((0?[1-9])|(1[0-9])|(2[0-8]))))))$";
//			if(!jzrq.matches(reg)){
//				it.remove();
//				deptErrorCount++;
//				deptErrorMess.append("第").append(next.get("rowIndex")).append("行截止日期格式错误").append("\r\n");
//				continue my;
//			}
//
//			jzrq=jzrq.replaceAll("/","-");
//			next.put("cfqx",jzrq);
//
//			//判断日期是否比生效日期大
//			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//			try {
//				if(sdf.parse(jzrq).getTime()<now.getTime()){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("行截止日期不能小于当前日期").append("\r\n");
//					continue my;
//				}
//			} catch (ParseException e) {
//				it.remove();
//				deptErrorCount++;
//				deptErrorMess.append("第").append(next.get("rowIndex")).append("行截止日期格式错误").append("\r\n");
//				continue my;
//			}
//
//			//数据库比对校验
//			String lhjcgzbm = (String)next.get("lhjcgzbm");
//			String jclb = (String) next.get("jclb");
//			String ysajh = (String) next.get("ysajh");
//			String jclbName="";
//			if(jclb.equals("C")){
//				jclbName="惩戒";
//			}else {
//				jclbName="激励";
//			}
//
//			if(cube.getCubeId()==1006 && next.get("glcf").equals("Y")){
//				//判断如果关联机构查询机构的案件编码是否存在
//				String ajbh= (String) next.get("glfrcfsjbm");
//				int ajbhExist = dataCheckDao.selectAjbhExist(ajbh);
//				if(ajbhExist<1){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("行关联法人处罚事件编码数据库中不存在").append("\r\n");
//					continue my;
//				}
//
//				Map<String, String> frAjbhGz = dataCheckDao.selectFrAjbhGzId(ajbh);
//				if(!lhjcgzbm.equals(frAjbhGz.get("bm"))){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("行自然人的规则编码与关联的法人规则编码不一致").append("\r\n");
//					continue my;
//				}
//
//				int zrrCswhExist = dataCheckDao.selectZrrCswhExist(Integer.parseInt(frAjbhGz.get("id")));
//				if(zrrCswhExist<1){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("该惩戒规则没有自然人的措施").append("\r\n");
//					continue my;
//				}
//
//			}else {
//				//判断填入的规则编码是否存在
//				int lhjcgzbmExist = dataCheckDao.selectLhjcgzbmExist(lhjcgzbm,jclb,dataCheckDao.selectTopDeptId(batchLog.getManagerId()));
//				if(lhjcgzbmExist<1){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("行当前用户所在部门没有该联合").append(jclbName).append("规则").append("\r\n");
//					continue my;
//				}
//
//				//判断填入的规则的处罚主体是否是自然人
//				String cfzt = dataCheckDao.selectGzInfoCfzt(lhjcgzbm, jclb);
//				if(cfzt.equals("C")){
//					it.remove();
//					deptErrorCount++;
//					deptErrorMess.append("第").append(next.get("rowIndex")).append("行联合").append(jclbName).append("规则的处罚主体是法人").append("\r\n");
//					continue my;
//				}
//			}
//
//			//判断自然人是否还在处罚中
//			Date jzrqDate = dataCheckDao.selectZrrJzrqDate(sfzbm, lhjcgzbm,jclb,ysajh);
//			try {
//				if(null!=jzrqDate){
//					if(now.getTime()<=jzrqDate.getTime() || sdf.format(now).equals(sdf.format(jzrqDate)) || sdf.parse(jzrq).getTime()<=jzrqDate.getTime()){
//						it.remove();
//						deptErrorCount++;
//						deptErrorMess.append("第").append(next.get("rowIndex")).append("行自然人还在").append(jclbName).append("中").append("\r\n");
//						continue my;
//					}
//				}
//			} catch (ParseException e) {
//				it.remove();
//				deptErrorCount++;
//				deptErrorMess.append("第").append(next.get("rowIndex")).append("行截止日期格式错误").append("\r\n");
//				continue my;
//			}
//
//			//表格重复数据校验
//			data.append((String)next.get("sfzbm")==null ? "":next.get("sfzbm"));
//			data.append((String)next.get("jclb")==null ? "":next.get("jclb")+",");
//			data.append((String)next.get("lhjcgzbm")==null ? "":next.get("lhjcgzbm")+",");
//			data.append((String)next.get("cfqx")==null ? "":next.get("cfqx")+",");
//			data.append((String)next.get("zjtype")==null ? "":next.get("zjtype")+",");
//			data.append((String)next.get("ysajh")==null ? "":next.get("ysajh")+",");
//
//			if(cube.getCubeId()==1006){
//				data.append((String)next.get("glcf")==null ? "":next.get("glcf"));
//				data.append((String)next.get("glfrcfsjbm")==null ? "":next.get("glfrcfsjbm")+",");
//			}
//
//			md5s = MD5Util.getInstance().md5s(data.toString().getBytes());
//			// 排除该批次文件中重复数据
//			if (set.contains(md5s)) {
//				duplicationMess.append("第").append(next.get("rowIndex")).append("行数据重复").append("\r\n");
//				duplicationCount++;
//				it.remove();
//				continue;
//			}
//
//			set.add(md5s);
//		}
//
//		Map<String, Object> map = new HashMap<>();
//		map.put("duplicationMess", duplicationMess.toString());
//		map.put("duplicationCount", duplicationCount);
//		map.put("missMess", missMess.toString());
//		map.put("missCount", missCount);
//		map.put("deptErrorMess", deptErrorMess.toString());
//		map.put("deptErrorCount", deptErrorCount);
//		map.put("now",now);
//		return map;
//	}
}
